home *** CD-ROM | disk | FTP | other *** search
- Yo, thanks for looking at this file.. To create any doors for HBBS
- you really should get hold of the full source code to it, when you have
- got that you'll be able to see loads of examples and figure out what does
- what better!
-
-
- But for now I'll give you a few instructions on how to create external
- programs (Doors) for HBBS.
- ==============================================================================
-
-
- To create a door all you have to do is this:
-
- 1) go to wb, find HBBS:Source/Doors_User/!NewDoor
-
- 2) select icon/copy from the menu to create a copy of the directory and
- all the files that are in it..
-
- 3) rename it to the name of your door
-
- 3b) if your door is called NOT called by a user typing a command
- at the BBS command prompt then it should go in Doors_System instead
- (e.g. FrontEnd)
-
- 4) open your new directory, in it you will see several files, the
- important ones are: Main.C, Build, !NukeObjects!, and Update. Update and
- !NukeObjects! are just amigados scripts to move files to
- HBBS:Doors/[User|System]/<yourdoordir>/<yourdoorname>.HBBS and to
- delete #?.o respectivly..
-
- 5) load the file "Update" into a text editor and edit it so that
- it copies the file called "Main", that the compiler produces, to the right
- place.
-
- 6) now you need to set your door up so that hbbs can run it, to do this you
- need to edit a file in any Commands directory, there's one in each
- conference, one in each node directory and one in HBBS:commands. The file
- you need to edit depends on a) what type of door it is and b) what the
- minimum access level a user must have before thay can run it. If it is a
- system door then you'll need to edit the file called "System" in any
- commands dir. If it's a user door then you'll need to edit either
- "Level_Global" (all users can use it no matter what their access level is)
- or "Level_<acslevel>" where <acslevel> is the minimum access level a user
- must have to run your door.
-
- E.G. "Level_50"
-
- Once you've decided which file you need to edit just load it up into a
- text editor.
- 7) you now need to add a few lines to the file, these are as follows
-
- <Command>_Type_<num>=NORMAL
- <Command>_Door_<num>=<door file>
-
- the following parameters are optional.
-
- <Command>_Debug_<num>=YES|NO
- <Command>_Params_<num>=<some parameters for your door>
-
- here's an example for a joinconf door:
-
- J_Type_1=NORMAL
- J_Door_1=HBBS:Doors/User/Download/Download.HBBS J_Debug_1=NO
-
- J_Type_2=NORMAL
- J_Door_2=HBBS:Doors/User/Stats/Stats.HBBS J_Params_2=JOINEDCONF
-
- <num> (above) means the order in which the doors are run, you can run as many
- doors one after the other as you like, if your door fails and another
- following door relies on your door's output then just call
- DOOR_Continue(FALSE); and the following doors will not get run (see the
- download door's source for an example..
-
- the <params> are passed to your door as N_ND->CurrentDoor->SystemOptions,
- it's just a string so you can just parse it as you would a normal string.
-
- 8) thats it!.. it sounds complicated but it really is incredibly
- easy and simple..
-
- Note: if you want to use a source code debugger on your door then you can set
- <command>_Debug_<num> to YES or TRUE (or ON :-) and when the door is called,
- a window will open on the control screen's window telling you what parameters
- to run your program with.. so if you are using CPR (line debugger with SAS/C)
- then call your door as CPR <door> <nodenum> <params> and bob's your uncle.. a
- bit easier than /x :-)
-
-
- Here's couple more tips to get you going..
-
- when you write strings to the bbs you can use either DOOR_SysopText(string) or
- DOOR_WriteText(string), you *MUST* use CR+LF ("\r\n") at the end of a line. not
- just "\n", (this is due to comms packages and the console.device... and it's
- not just HBBS that needs this.. Use DOOR_SysopText(string) to display stuff
- on the sysop's watch window ONLY, or use DOOR_WriteText(string) to write stuff
- to the serial port *AND* the sysop's watch window.
-
- check out DOOR_GetLine(), this is the main thing you use to get input from the
- user, at the moment the user cannot use thier cursor keys for anything other
- than line editing or scrolling through thier command history, so (for example)
- you can't use cursor up to scroll back when you are looking through the
- filelists. This will change soon, I'll just add another flag value that
- you'll be able to specify (something like GL_RAWKEY)..
-
- to read a line of text, with history, and timeout after 20 secs, max len 80
- chars and a prompt string of "Banana" do this:
-
- DOOR_GetLine(GL_DISPLAY|GL_EDIT|GL_HISTORY,'\0',80,20,"Banana");
-
- getline returns different numbers depending on what happened, check out
- HBBS:Source/Common/Defines.h and search for IN_#?
-
- e.g. a timeout returns IN_TIMEOUT, a normal line would be IN_GOTLINE, or
- IN_LOSSCARRIER.
-
- after EVERY call to DOOR_GetLine() you *MUST*, and I mean *MUST*, check the
- status of N_ND->OnlineStatus, if it is not equal to OS_ONLINE then your door
- must exit *without* sending *ANY* more data to the serial port..
-
- then, if the user is still on-line, the string returned will be placed in
- N_ND->CurrentLine which is a pointer to a null terminated string.
-
-
- Also check out HBBS_LoadConfig(), HBBS_CreateConfig(), HBBS_GetSetting(),
- HBBS_AddCfgItem(), HBBS_RemoveCfgItem(), HBBS_SaveConfig(), and
- HBBS_FlushConfig() for some COOOOOL standard configuration file loading
- and saving routines, check out Node_Main.C for some examples....
-